// $Id$
// vim:ft=javascript

ARG_ENABLE("zip", "ZIP support", "yes");

if (PHP_ZIP != "no") {
	if (CHECK_HEADER_ADD_INCLUDE("zip.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\include;" + PHP_EXTRA_INCLUDES) &&
		CHECK_HEADER_ADD_INCLUDE("zipconf.h", "CFLAGS_ZIP", PHP_PHP_BUILD + "\\lib\\libzip\\include;" + PHP_EXTRA_LIBS + "\\libzip\\include;" + PHP_ZIP) &&
		(PHP_ZIP_SHARED && CHECK_LIB("libzip.lib", "zip", PHP_ZIP) || CHECK_LIB("libzip_a.lib", "zip", PHP_ZIP) && CHECK_LIB("libbz2_a.lib", "zip", PHP_ZIP) && CHECK_LIB("zlib_a.lib", "zip", PHP_ZIP))
	) {
		EXTENSION('zip', 'php_zip.c zip_stream.c');

		if (get_define("LIBS_ZIP").match("libzip_a(?:_debug)?\.lib")) {
			/* Using static dependency lib. */
			AC_DEFINE("ZIP_STATIC", 1);
		}

		AC_DEFINE('HAVE_ZIP', 1);
		AC_DEFINE('HAVE_LIBZIP', 1);
		ADD_FLAG("CFLAGS_ZIP", "/D _WIN32 /D HAVE_ENCRYPTION");
	} else if (CHECK_HEADER_ADD_INCLUDE("zlib.h", "CFLAGS_ZIP", "..\\zlib;" + PHP_ZIP) &&
		CHECK_HEADER_ADD_INCLUDE("zipconf.h", "CFLAGS_ZIP", configure_module_dirname + "\\lib;" + PHP_ZIP) &&
		(((PHP_ZLIB=="no") && (CHECK_LIB("zlib_a.lib", "zip", PHP_ZIP) ||  CHECK_LIB("zlib.lib", "zip", PHP_ZIP))) ||
			(PHP_ZLIB_SHARED && CHECK_LIB("zlib.lib", "zip", PHP_ZIP)) || (PHP_ZLIB == "yes" && (!PHP_ZLIB_SHARED)))
		) {
		EXTENSION('zip', 'php_zip.c zip_stream.c');
		ADD_SOURCES(configure_module_dirname + "/lib", "zip_add.c zip_add_dir.c zip_add_entry.c\
			zip_close.c zip_delete.c zip_dir_add.c zip_dirent.c zip_discard.c zip_entry.c\
			zip_err_str.c zip_error.c zip_error_clear.c zip_error_get.c zip_error_get_sys_type.c\
			zip_error_strerror.c zip_error_to_str.c zip_extra_field.c zip_extra_field_api.c\
			zip_fclose.c zip_fdopen.c zip_file_add.c zip_file_error_clear.c zip_file_error_get.c\
			zip_file_get_comment.c zip_file_get_offset.c zip_file_rename.c zip_file_replace.c\
			zip_file_set_comment.c zip_file_strerror.c zip_filerange_crc.c zip_fopen.c\
			zip_fopen_encrypted.c zip_fopen_index.c zip_fopen_index_encrypted.c zip_fread.c\
			zip_get_archive_comment.c zip_get_archive_flag.c zip_get_compression_implementation.c\
			zip_get_encryption_implementation.c zip_get_file_comment.c zip_get_name.c zip_get_num_entries.c \
			zip_get_num_files.c zip_memdup.c zip_name_locate.c zip_new.c zip_open.c zip_rename.c zip_replace.c\
			zip_hash.c \
			zip_set_archive_comment.c zip_set_archive_flag.c zip_set_default_password.c zip_set_file_comment.c\
			zip_set_file_compression.c zip_set_name.c zip_source_buffer.c zip_source_close.c zip_source_crc.c\
			zip_source_deflate.c zip_source_error.c zip_source_filep.c zip_source_free.c\
			zip_source_function.c zip_source_layered.c zip_source_open.c zip_source_pkware.c \
			zip_source_read.c zip_source_stat.c zip_source_window.c zip_source_zip.c zip_source_zip_new.c\
			zip_stat.c zip_stat_index.c zip_stat_init.c zip_strerror.c zip_string.c zip_unchange.c zip_unchange_all.c\
			zip_unchange_archive.c zip_unchange_data.c zip_utf-8.c mkstemp.c \
			zip_file_set_external_attributes.c zip_file_get_external_attributes.c zip_source_write.c \
			zip_source_call.c zip_source_supports.c zip_buffer.c zip_source_seek.c zip_source_tell.c \
			zip_io_util.c zip_source_remove.c zip_source_rollback_write.c zip_source_commit_write.c \
			zip_source_tell_write.c zip_source_begin_write.c zip_source_seek_write.c \
			zip_source_win32a.c zip_source_win32utf8.c zip_source_win32handle.c zip_source_win32w.c", "zip");

		AC_DEFINE('HAVE_ZIP', 1);
		ADD_FLAG("CFLAGS_ZIP", "/D _WIN32");
	} else {
		WARNING("zip not enabled; libraries and headers not found");
	}
}
